package 华为OD机试B卷复用题.基础题;

import utils.MyUtil;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeSet;

public class HJ57_流水线 {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner in = new Scanner(new File("src/main/java/华为OD机试B卷复用题/基础题/input/57.txt"));
        MyUtil.START();
        Solution(in);
        MyUtil.END();
    }

    // 最小优先队列，并设置指定大小，用 TreeSet 实现 因为最后要取最大的数 可以直接 pollLast。
    static void Solution(Scanner in) {
        Integer[] tasks = {8, 4, 3, 2, 10};
        Arrays.sort(tasks);
        TreeSet<Integer> liushuixian = new TreeSet<Integer>();
        for (int i = 0; i < tasks.length; i++) {
            if (liushuixian.size() < 3) {
                liushuixian.add(tasks[i]);
            } else {
                Integer now_min = liushuixian.pollFirst();
                liushuixian.add(now_min + tasks[i]);
            }
        }
        System.out.println(liushuixian.last());
    }
}
